﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.SqlClient;

namespace KTDS_IPBS_WEB
{
    public struct GroupCode
    {
        public String groupcode_src;
        public String groupcode_dst;
    }

    public struct IndexInfo
    {
        public int index_src;
        public int index_dst;
    }

    public class C_IPBS
    {
        public List<string> test(List<string> lst_src, List<string> lst_dst)
        {
            GroupCode gc = new GroupCode();
            IndexInfo index = new IndexInfo();
            C_DBConnect dbcon = new C_DBConnect();

            List<string> Result_IP_Info = new List<string>();

            try
            {
                // 공통 부분 추출
                for (int i = 0; i < lst_src.Count; i++)
                {
                    for (int y = 0; y < lst_dst.Count; y++)
                    {
                        // DB의 데이터를 가지고 비교
                        // IP정보를 가지고 DB의 그룹 코드 추출
                        // 그룹 코드 비교(두개의 IP가 동일한가?)
                        gc.groupcode_src = dbcon.SelectGroupCode(lst_src[i].ToString());
                        gc.groupcode_dst = dbcon.SelectGroupCode(lst_dst[y].ToString());

                        //DB에 Group 코드가 있는지 확인
                        if (gc.groupcode_src != null || gc.groupcode_dst != null)
                        {
                            //DB에 Group코드가 있고, 같은게 있는 경우
                            if (gc.groupcode_src == gc.groupcode_dst)
                            {
                                index.index_src = lst_src.IndexOf(lst_src[i].ToString());
                                index.index_dst = lst_dst.IndexOf(lst_dst[y].ToString());
                            }
                        }
                    }
                }

                // 결합 로직
                for (int i = (lst_src.Count() - 1); i > index.index_src; i--)
                {
                    if (lst_src[i] != "*" && lst_src[i] != "10.225.22.2")
                    {
                        Result_IP_Info.Add(lst_src[i]);
                    }
                }

                for (int i = index.index_dst; i < lst_dst.Count(); i++)
                {
                    if (lst_dst[i] != "10.225.22.2")
                    {
                        Result_IP_Info.Add(lst_dst[i]);
                    }
                }
            }
            catch (Exception ex)
            {
            }
            finally
            {
            }

            return Result_IP_Info;
        }
    }
}